/*
在一个平面上有n(1 <= n <= 100000)个村庄，每个村庄通过坐标(xi, yi)标示位置, -10 ^ 9 <= xi, yi <= 10 ^ 9。现在想要建一个邮局，使得到各个村庄的距离之和最短。
在这个问题中，距离定义为曼哈顿距离，即点i和点j的距离等于 | xi - xj | +| yi - yj |
输入第一行为n，表示村庄的数量
接下来n行每行有两个整数，表示一个村庄的坐标
输出一个数字，表示建立的邮局到各个村庄的和

提示：

村庄和邮局的坐标都一定为整数

对于超过int的数字，请用long long，输入和读取用%lld
*/



#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#if defined(_WIN32) && !defined(__cplusplus)
#define inline __inline
#endif

#include <stdio.h>
#include <stdlib.h>

typedef struct
{
	int X;
	int Y;
}Point;

int cmpx(const void*a, const void*b)
{
	return ((Point*)a)->X - ((Point*)b)->X;
}
int cmpy(const void*a, const void*b)
{
	return ((Point*)a)->Y - ((Point*)b)->Y;
}

long long GetManDist(Point a, Point b)
{
	long long dist = 0;
	dist += a.X > b.X ? a.X - b.X : b.X - a.X;
	dist += a.Y > b.Y ? a.Y - b.Y : b.Y - a.Y;
	return dist;
}

int main()
{
	Point points[100000];
	int n;

	scanf("%d", &n);

	for (int i = 0; i < n; i++)
	{
		scanf("%d%d", &points[i].X, &points[i].Y);
	}

	Point tar;
	qsort(points, n, sizeof(Point), cmpx);
	tar.X = points[n / 2].X;
	qsort(points, n, sizeof(Point), cmpy);
	tar.Y = points[n / 2].Y;

	long long dist = 0;
	for (int i = 0; i < n; i++)
	{
		dist += GetManDist(tar, points[i]);
	}
	printf("%lld\n", dist);	
	return 0;
}